//
// Created by qsy on 2023/8/8.
//
//
// Created by qsy on 2023/7/21.
//
#include "Task_Config.h"
#include "task.h"


//初始化结构体
static TASK_COMPONENTS TaskComps[] =
        {
                {0, 100,  100,  task_100ms},            // 1s的任务
                {0, 1000,  1000,  task_1s},
        };
/**************************************************************************************
* FunctionName   : TaskRemarks()
* Description    : 任务标志处理
* EntryParameter : None
* ReturnValue    : None
* attention      : ***在定时器中断中调用此函数即可***
**************************************************************************************/
void TaskRemarks(void) {
    uint8_t i;

    for (i = 0; i < TASKS_MAX; i++)           // 逐个任务时间处理
    {
        if (TaskComps[i].Timer)               // 时间不为0
        {
            TaskComps[i].Timer--;             // 减去一个节拍
            if (TaskComps[i].Timer == 0)      // 时间减完了
            {
                TaskComps[i].Timer = TaskComps[i].ItvTime; // 恢复计时器值，从新下一次
                TaskComps[i].Run = 1;        // 任务可以运行
            }
        }
    }
}
/**************************************************************************************
* FunctionName   : TaskProcess()
* Description    : 任务处理|判断什么时候该执行那一个任务
* EntryParameter : None
* ReturnValue    : None
* * attention      : ***放在mian的while(1)即可***
**************************************************************************************/
void TaskProcess(void) {
    uint8_t i;

    for (i = 0; i < TASKS_MAX; i++)     // 逐个任务时间处理
    {
        if (TaskComps[i].Run)           // 时间不为0
        {
            TaskComps[i].TaskHook();    // 运行任务
            TaskComps[i].Run = 0;       // 标志清0
        }
    }
}
